'''
Test e DEBUG dal 24 gen 2011
DEBUG(0): grafico i dati acquisiti dal file:
DEBUG(1): inizializzazione e update dei centri sul grafico
DEBUG(2): test di clusterize
'''
import pylab as pl
import scipy as sp

from data.Data import *
from KGA.Chromosome import *
from initialization.Start import *
import utility.utility as UTL
import utility.graph as GR

###------
# SOLO PER DEBUG
import KGA.Population as POPz
###------


### richiesta dati iniziale e scansione del file
EACL = Start()

X = EACL.getData()

### DEBUG (0) grafico i dati acquisiti dal file: ----------------------
print "Numero di pattern: ", EACL.nPattern
print "Numero di dimensioni:",EACL.nDim

### viasualizzare i punti acquisiti
pl.figure(num=None, figsize=(8, 8), dpi=80, facecolor='g', edgecolor='y')

GR.initGraph(pl,X,EACL.nPattern)
### ------------------------------------------------------

### DEBUG (1): inizializzazione e update dei centri sul grafico --------
pop_size = 3

pop = POPz.Population(pop_size,X,EACL.nCentr)
pop.initRandomChromosomes()

Crom = pop.getChromosomes()

# Immaginado che bestIndex sia l'indice del cromosoma migliore
bestIndx = 0

### Z e' la matrice contenete i best centri
Z = []
for i in range(EACL.nCentr):
	#~ print Crom[bestIndx].getCentroid(i)
	Z.append(Crom[bestIndx].getCentroid(i))
#~ print "stampo zx"
#~ print Z[0][0]
#~ print "stampo zy"
#~ print Z[0][1]

### inizializza il grafico dei centri 
### sul grafico dei punti gia' esistente
grCentri = GR.initCentersGraph(pl,Z,EACL.nCentr)
### Aggiorna il grafico pronto per quando cambiera' la pos dei centroidi
GR.updateGraph(pl,grCentri,Z,EACL.nCentr)
### -------------------------------------------------------

### DEBUG(2) test di clusterize: -----------------------------------

# pop.metricDivision()

for j in range(0,10):
	
	pop.metricDivision()
	pop.clusterize()

	Chrom = pop.getChromosomes()
	
	Z = []
	for i in range(EACL.nCentr):
		Z.append(Chrom[bestIndx].getCentroid(i))
		
	GR.updateGraph(pl,grCentri,Z,EACL.nCentr)
	
### Prova della divisione dei pattern a colori
### immaginado che bestIndx sia l'indice del miglior individuo
### Quindi della miglior soluzione

GR.colorDivision(X,Chrom[bestIndx],EACL.nPattern,EACL.nCentr)

### -------------------------------------------------------


### altrimenti si chiude il grafico	
pl.show()
